<?php

// Public base controller
class PublicController extends Controller
{
	private $controller_name = DEFAULT_PUBLIC_CTRL;
	private $action = 'index';
	private $page_title = '';

	function PublicController()
	{
		parent::Controller();
		$this->load->model('ApplicationConfig');

		// helpers
		$this->load->helper('html');
		$this->load->helper('url');

		// nom du contrôleur courant
		$this->controller_name = $this->uri->segment(2) ? $this->uri->segment(2) : DEFAULT_PUBLIC_CTRL;
		// nom de l'action courante
		$this->action = $this->uri->segment(3) ? $this->uri->segment(3) : 'index';
	}

	function index()
	{
		redirect('/'.DEFAULT_PUBLIC_CTRL);
	}

	/**
	 * Afficher une vue dans le layout
	 * @param path: fichier vue du contrôleur courant à afficher
	 * @param data: données à transmettre à la vue
	 */
	function _display($path, $data = null)
	{
		// contexte d'exécution de la vue
		$data['context'] = array(
			// nom du contrôleur courant
			'controller_name' => $this->controller_name,
			// nom de l'action courante
			'action' => $this->action,
			// vue courante
			'view' => $path,
			// chemin de la vue
			'view_path' => 'public/'.$this->controller_name.'/'.$path,
			// balise <title>
			'page_title' => $this->page_title
		);

		// on charge toujours les menus, quelque soit la vue
		$this->load->model('MenuItem');
		$data['menu_header'] = $this->MenuItem->get_by_menu('header');
		$data['menu_footer'] = $this->MenuItem->get_by_menu('footer');
		// affichage de la vue
		$this->load->view('public/public_layout', $data);
	}

	/**
	 * Affichage brut sans utiliser de layout
	 * @param path: chemin de la vue partielle à afficher
	 */
	function _raw_display($path, $data = null)
	{
		$this->load->view('public/'.$path, $data);
	}

	protected function set_page_title($page_title)
	{
		$this->page_title = $page_title;
	}
}
